package org.dezenho.client.SO;

import java.util.List;
import java.util.Map;

import javax.swing.JOptionPane;

import org.dezenho.client.IU.Adivinhador;
import org.dezenho.client.IU.Desenhista;
import org.dezenho.client.IU.FimPartida;
import org.dezenho.client.IU.FimRodada;
import org.dezenho.client.IU.GenericTela;
import org.dezenho.client.IU.Inicial;
import org.dezenho.client.IU.SalaEspera;

public class DezenhoTelaClient {
	
	private GenericTela telaCorrente;

	public void apresentaMensagem(String mensagem) {
		JOptionPane.showMessageDialog(null, mensagem, "Dezenho - Mensagem", 1);		
	}

	public void apresentaResultadoPartida(Map<String, Integer> pontuacao) {
		getTelaCorrente().setVisible(false);
		FimPartida telaFimPartida = new FimPartida();
		telaFimPartida.criaTela(pontuacao);
		setTelaCorrente(telaFimPartida);		
	}

	public void apresentaResultadoRodada(Map<String, Integer> pontuacao,
			String acertador) {
		getTelaCorrente().setVisible(false);
		FimRodada telaFimRodada = new FimRodada();
		telaFimRodada.criaTela(pontuacao, acertador);
		setTelaCorrente(telaFimRodada);
	}

	public void inicializaTelaSalaEspera(List<String> jogadoresEspera) {
		getTelaCorrente().setVisible(false);
		SalaEspera telaSalaEspera = new SalaEspera();
		telaSalaEspera.criaTela(jogadoresEspera);
		setTelaCorrente(telaSalaEspera);
	}

	public void inicializaTelaDesenhista(int tempoTotal, String palavra, int multiplicador) {
		getTelaCorrente().setVisible(false);
		Desenhista telaDesenhista = new Desenhista();
		telaDesenhista.criaTela(tempoTotal, palavra, multiplicador);
		setTelaCorrente(telaDesenhista);		
	}

	public void inicializaTelaAdivinhador(int tempoTotal, int multiplicador) {
		getTelaCorrente().setVisible(false);
		Adivinhador telaAdivinhador = new Adivinhador();
		telaAdivinhador.criaTela(tempoTotal, multiplicador);
		setTelaCorrente(telaAdivinhador);
	}
	
	public void apresentaTelaInicial() {
		Inicial telaInicial = new Inicial();
		telaInicial.criaTela();
		setTelaCorrente(telaInicial);
	}

	protected GenericTela getTelaCorrente() {
		return telaCorrente;
	}

	protected void setTelaCorrente(GenericTela telaCorrente) {
		this.telaCorrente = telaCorrente;
	}	

}
